const CompressionWebpackPlugin = require('compression-webpack-plugin')
const productionGzipExtensions = ['js', 'css']
const p = process.env.NODE_ENV === "production" ? true : false
const pageConfig = require('./page.config');

let pageMap = {};
pageConfig.forEach((item)=> {
    pageMap[`tempalte${item}`] = {
        entry: 'src/views/template/template.js',
        template:'public/index.html',
        filename:  p?`public/template${item}.jsp`:'index.html'
    }
})

module.exports = {
    baseUrl: process.env.NODE_ENV === "production" ? "https://shanhu-1256924026.cos.ap-guangzhou.myqcloud.com/detail" : "/",
    outputDir: process.env.outputDir,
    devServer: {
        port: 8111, // 端口号
        host: 'localhost',
        historyApiFallback: {
            rewrites: [
                { from: /^\/template$/, to: '/template.html' },
                { from: /^\/template1$/, to: '/template1.html' },
                { from: /^\/orderSearch/, to: '/orderSearch.html' },
                { from: /^\/orderSuccess/, to: '/orderSuccess.html' },
                { from: /./, to: '/index.html' },
            ]
        }
    },
    // 打包时不生成.map文件 避免看到源码
    productionSourceMap: false,
//配置参数详解
//     asset： 目标资源名称。 [file] 会被替换成原始资源。[path] 会被替换成原始资源的路径， [query] 会被替换成查询字符串。默认值是 "[path].gz[query]"。
//     algorithm： 可以是 function(buf, callback) 或者字符串。对于字符串来说依照 zlib 的算法(或者 zopfli 的算法)。默认值是 "gzip"。
//     test： 所有匹配该正则的资源都会被处理。默认值是全部资源。
//     threshold： 只有大小大于该值的资源会被处理。单位是 bytes。默认值是 0。
//     minRatio： 只有压缩率小于这个值的资源才会被处理。默认值是 0.8。
    configureWebpack:config=> {
        config.plugins.push(new CompressionWebpackPlugin({
            algorithm: 'gzip',
            test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'),
            threshold: 10240,
            minRatio: 0.8
        }))
        // config.externals={
        //     'element-ui': 'ELEMENT',
        // }
    },
    pages:{
        // index: {
        //     entry: 'src/main.js',
        //     template:'public/index.html',
        //     filename:  p?'public/index.jsp':'index.html',
        // },
        template: {
            entry: 'src/views/template/template.js',
            template:'public/index.html',
            filename:  p?'public/index.jsp':'index.html',
        },
        template1: {
            entry: 'src/views/template/template1.js',
            template:'public/index.html',
            filename:  p?'public/template1.jsp':'template1.jsp',
        },
        orderSuccess: {
            entry: 'src/orderSuccess.js',
            template: 'public/index.html',
            filename: p?'public/orderSuccess.jsp':'orderSuccess.html',
        },
        orderSearch: {
            entry: 'src/orderSearch.js',
            template: 'public/index.html',
            filename: p?'public/orderSearch.jsp':'orderSearch.html',
        },
        ...pageMap
    }
};